[Ajuda] Otimizar script

1. [Ajuda] Otimizar script

Vinicius Miqueloti
Miqueloti

(usa Lubuntu)

Enviado em 12/03/2012 - 18:57h

Boa noite gente,

Acabei de criar um script php para tratar um relatório de erros em csv gerado por um sistema java.
Para tanto, eu possuo 2 arquivos, o relatório csv em si que existem erros não tratados, e um arquivo de log de erros onde eu utilizarei funções de manipulação de arquivos e strings para buscar as informações e alterar o relatório.

Após muito estudar as funções do php eu consegui fazer um scriptzinho que atende com sucesso o meu objetivo, o problema é que quando o relatório ou o log de erros é muito grande, ele demora alguns minutinhos para processar.

Gostaria de saber de vocês, como eu poderia otimizar o script abaixo para executar mais rapidamente:


<?php
if ($argc != 3) {
print "USO: php tratamento_final.php <arquivo de log insercao> <relatorio dos nao inseridos> \n\n";
exit(0);
}

ini_set("auto_detect_line_endings", true);

$log = fopen($argv[1], "r") or die($argv[1]." está inacessivel.");
$relatorio = file_get_contents($argv[2]) or die($argv[2]." está inacessivel.");

if ($log && $relatorio) {
while (!feof($log)) {
$linha = fgets($log, 4096);

//busca por erro de parametro
$busca = strpos($linha, "ERROR");
if ($busca) {
$erro = str_replace("\r\n",";",trim(strstr($linha, "Erro nos parametros")));
$dslam = substr(strstr($linhaAnterior, "DSLAM: "), 7, 15);
$porta = substr(strstr($linhaAnterior, "Porta: "), 7, 11);

$relatorio = str_replace($dslam.";".$porta.";1;1;;", $dslam.";".$porta.";1;1;;".$erro, $relatorio);
file_put_contents($argv[2], $relatorio);
}

//busca por erro de TransactionException
$busca = strpos($linha, "TransactionException");
if ($busca) {
$codErro = "-4";
$erro = str_replace("\r\n",";",trim(strstr($linha, "Erro WDT:")));
$dslam = substr(strstr($linhaAnterior, "DSLAM: "), 7, 15);
$porta = substr(strstr($linhaAnterior, "Porta: "), 7, 11);

$relatorio = str_replace($dslam.";".$porta.";1;1;;", $dslam.";".$porta.";1;1;".$codErro.";".$erro, $relatorio);
file_put_contents($argv[2], $relatorio);
}

//busca por erro 301
$busca = strpos($linha, "Falha ao consultar DSLAM");
if ($busca) {
$codErro = "-4";
$erro = str_replace("\r\n",";",trim(strstr($linha, "Erro WDT:")));
$dslam = substr(strstr($linhaAnterior, "DSLAM: "), 7, 15);
$porta = substr(strstr($linhaAnterior, "Porta: "), 7, 11);

$relatorio = str_replace($dslam.";".$porta.";1;1;;", $dslam.";".$porta.";1;1;".$codErro.";".$erro, $relatorio);
file_put_contents($argv[2], $relatorio);
}

$linhaAnterior = $linha;
}
}
?>



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts